Search and navigation tools

ABSTRACT

A system, method and computer program product for a search tool is provided. A user-input search term is received in a search tool for finding instances of the search term in a document currently presented to the user. An instance of the search term in a hidden content element of the document is identified. A content element is determined for exposing the hidden content element. The determined content element is presented to the user and highlighted, to prompt user interaction therewith so as to expose the hidden content element.

BACKGROUND

The present disclosure relates to improvements in search and navigationtools for computing applications and, more specifically, to systems andmethods for the improved search, identification and display of searchterms, such as text strings or other objects, by a search tool inresponse to a search query for the search term.

SUMMARY

According to an aspect of the present disclosure, a computer implementedmethod is provided. A user-input search term is received in a searchtool for finding instances of the search term in a document currentlypresented to the user. An instance of the search term in a hiddencontent element of the document is identified. A content element isdetermined for exposing the hidden content element. The determinedcontent element is presented to the user and highlighted, to prompt userinteraction therewith so as to expose the hidden content element.

According to another aspect of the present disclosure, a system isprovided. The system comprises a computing device comprising aprocessing unit and a memory unit. The computing device is configured topresent documents to a user and to enable the user to search for searchterms using a search tool. The processing unit is configured to receivea user-input search term in a search tool for finding instances of thesearch term in a document currently presented to the user. Theprocessing unit is configured to determine an instance of the searchterm in a hidden content element of the document. The processing unit isconfigured to determine a content element for exposing the hiddencontent element. The processing unit is configured to presenting thedetermined content element. The determined content element ishighlighted to prompt user interaction therewith so as to expose thehidden content element.

According to yet another aspect of the present disclosure, a computerprogram product is provided. The computer program product comprises acomputer readable storage medium having program instructions embodiedtherewith. The program instructions are executable by a processor tocause the processor to: receive a user-input search term in a searchtool for finding instances of the search term in a document currentlypresented to the user; determine an instance of the search term in ahidden content element of the document; determine a content element forexposing the hidden content element, and present the determined contentelement, wherein the determined content element is highlighted to promptuser interaction therewith so as to expose the hidden content element.

BRIEF DESCRIPTION OF THE DRAWINGS

Example implementations of the present disclosure will be describedbelow with reference to the following drawings, in which:

FIG. 1 is a block diagram of a computing system in accordance withexample implementations of the present disclosure;

FIG. 2 is a flowchart of a method for enhanced navigation of a documentpresented by a computing application in accordance with exampleimplementations of the present disclosure;

FIG. 3 is a flowchart of a method for revealing hidden content elementsduring enhanced navigation of a document in accordance with exampleimplementations of the present disclosure; and

FIG. 4 is a flowchart of another method for revealing hidden contentelements during enhanced navigation of a document in accordance withexample implementations of the present disclosure.

DETAILED DESCRIPTION

Search and navigation tools are commonly used to guide the navigation ofa user, when viewing presented document content associated with one ormore computer applications running on a computing device. For example,web browsers and user application programs, such as email applications,word processing applications, spreadsheet applications and the like, mayinclude a “Find” tool to identify a search term, such as a user-inputtext string or other object. The “Find tool” may be used to identifyoccurrences or “instances” of the search term in document content thatmay be currently loaded and presented by the application, such as a htmldocument, email, word processing document or spreadsheet. The “Find”tool locates instances of the search term, and, typically, highlightseach identified instance in the presentation to the user (e.g., byhighlighting the instances of the search term in a current view of thedocument on a display screen). This enables the user to quickly identifyand view the highlighted parts of the displayed content including thesearch term of interest.

A problem with the above described “Find” tool is that it may be unableto identify some instances of a search term in the currently presenteddocument. In particular, the “Find” functionality may be unable toidentify and highlight instances of the search term in content that iscurrently hidden from view or is not presented in the current view, forexample because it is dynamically created.

For example, consider a scenario in which a webpage (i.e., htmldocument) is currently loaded and presented by a web browser on thedisplay of a user computing device. A user inputs a search termcomprising a text string into a “Find” tool associated with the webbrowser, which identifies instances of the text string in the body ofthe html document/webpage that is currently loaded and presented to theuser. The “Find” tool then highlights the identified instances, whichare visible in the current view, as the results of the query on thedisplay. However, further instances of the text string may exist withinthe Body of the html document/webpage or elsewhere, in particular incontent that is not currently loaded and/or is otherwise hidden fromview. For example, the content may be hidden within a currentlycollapsed part of a tree, such as within hidden user comments relatingto a blog post or article. In another example, the content may be hiddenas a result of a predetermined property (e.g., a setting defined by thewebpage designer), such as a CSS property of the webpage/html document.In a further example, the content may be hidden because it isdynamically generated, for example, in response to a defined condition,such as a user input. As the skilled person will appreciate, content maybe hidden for many other possible reasons. Such hidden content of thehtml document/webpage is not loaded by the web browser application, andso is not considered by conventional navigation tools, such as the“Find” tool, to identify and highlight the text string being searched.Thus, conventional search and navigation tools, such as the “Find” tool,may be inaccurate, since they are unable to identify all instances of asearch term in response to the user's query, leading to poor userexperience.

In the present disclosure, the term “hidden content element” may includecontent elements within a document which are not shown in the currentview of the document presented to the user. This may include contentelements that have dynamically created content, that is, element valueswhich are dynamically generated. As the skilled person will appreciate,other reasons for content elements and/or their content to be “hidden”are possible and contemplated by the present disclosure. The term“document” may include any form of computer file (or equivalent) that ispresented using a user computing application, including, but not limitedto, an email or similar electronic message, an html document (orwebpage), a word processing document, a spreadsheet and any other typeof document for presentation to a user, whether now known or developedin the future.

The present disclosure provides a method, system and computer programproduct, which provides improved searching and/or navigation of adocument presented by an application, by considering hidden content andenabling query results in such hidden content to be revealed.

FIG. 1 is a block diagram of a computing system 100 in accordance withexample implementations of the present disclosure. In particular thecomputing system 100 may comprise a computing device 110 having a memoryunit 120, a processing unit 130 and an input/output unit 140. Computingdevice 110 may be any type of user device, such as a personal computer,notebook computer, tablet computer, smartphone or other type of usercomputing device, whether now known or developed in the future.Computing device 110 further includes user interface devices 150connected to input/output unit 140 or integrated within computing device110. User interface devices 150 may include one or more of a display(e.g., screen or touchscreen), a printer, a keyboard, a pointing device(e.g., mouse, joystick, touchpad), an audio device (e.g. microphoneand/or speaker) and any other type of user interface device.Input/output unit 140 may also be connected to a network 160 to send andreceive data to other computing devices connected to the network 160,such as a web server 180. Network 160 may comprise any suitable wired orwireless data communications network, such as a local area network, widearea network or the Internet.

Memory unit 120 of computing device 110 may include processing modules170, including an operating system module 172 (herein “operatingsystem”) and one or more user application modules 174 (herein “userapplications”) that may run within the operating system 172. Eachprocessing module 170 comprises instructions for execution by processingunit 130 for processing data and/or instructions received frominput/output unit 140 and/or data and/or instructions stored in memoryunit 120. Examples of operating systems implemented by operating systemmodule 172 include Windows® (Windows® and all Windows®-based trademarksand logos are trademarks or registered trademarks of MicrosoftCorporation and/or its affiliates) and macOS® (macOS® and allmacOS®-based trademarks and logos are trademarks or registeredtrademarks of Apple Inc. and/or its affiliates). for desktop computingdevices, and Android® (Android® and all Android®-based trademarks andlogos are trademarks or registered trademarks of Google Inc. and/or itsaffiliates) and Apple Inc.'s iOS® (iOS® and all iOS®-based trademarksand logos are trademarks or registered trademarks of Cisco Technology,Inc. and/or its affiliates) for mobile computing devices. As the skilledperson will appreciate, the present disclosure is not limited to anyparticular operating system. Examples of user applications implementedby user application modules 174 include a web browser application, anemail application, a word processing application and a spreadsheetapplication. As the skilled person will appreciate, the presentdisclosure is not limited to any particular type of application programor software, but may be used in conjunction with any type of userapplication in which search and navigation tools may be used.

Memory unit 120 may also store processing modules 170 comprising searchand navigation tools 176, including enhanced tool module 178 (herein“enhanced tool”) comprising instructions for providing enhanced searchand navigation of document content, in accordance with the presentdisclosure. In some example implementations, enhanced tool module 178may be integrated within the operating system module 172. In otherexample implementations, the enhanced tool module 178 may be integratedwithin one or more of the user application modules 174. In furtherexample implementations, the enhanced tool module 178 may be anindependent processing module 170, whereby enhanced search andnavigation functionality is executed in response to, for example, atriggering event detected during execution of a navigation tool module176 of a user application module 174, or otherwise within a usercomputing application.

FIG. 2 is a flowchart of a method 200 for enhanced search and navigationof a document presented by a user application in accordance with exampleimplementations of the present disclosure. In particular, although notexclusively, method 200 may be performed by processing unit 130, inaccordance with one or more processing modules 170 comprising enhancedtool module 178 of memory unit 120 of the computing device 110 of FIG.1.

In example implementations according to the method 200 of FIG. 2, thesearch and navigation tool is a “Find” tool for locating a search term,such as a text string or other object, within a document currentlyloaded and presented by a user application. Other exampleimplementations, comprising other types of search and/or navigation toolsuch as a “Select” tool or a “Replace” tool, are possible andcontemplated by the present disclosure.

The method 200 starts at step 205. For example, the method may start inresponse to a user interaction with a user application for initiatinguse of the “Find” tool. As the skilled person will appreciate, such userinteraction may comprise clicking an icon, selecting a menu option orusing a keyboard shortcut (e.g., Cmd/Ctrl+F for the “Find” tool), whichcauses the display of a user interaction element, such as a graphicaluser interface (GUI) element of the “Find” tool, for enabling a user toenter a search term as a query.

In step 210 enhanced tool module 178 receives a user input search termvia the “Find” tool. In some embodiments, the search term comprises thetext string “TEST”. Enhanced tool module 178 searches the whole of thedocument in step 220 to identify instances of the search term, such as“TEST”. In the case that the application program is a web browser, instep 220 enhanced tool module 178 may search for the text string in allparts of the code of the html document or by traversing the documentobject model (DOM) tree representation thereof to find text nodes ofelements corresponding to the test string. In the case of other types ofapplication programs, enhanced tool module 178 may search for the textstring in all parts of the document in step 220, optionally includingany linked content and/or documents.

In step 230, enhanced tool module 178 highlights identified instances ofthe search term in the visible content elements of the documentcurrently presented to the user by the application. For example, thevisible instances of the text string “TEST” may be highlighted in thecurrently presented document by using a different font or color for theidentified text string or its background, or by using underline, bold oritalics for the identified text string, or any other method ofhighlighting the text string to the user.

As the skilled person will appreciate, steps 210 to 230 of FIG. 2provide equivalent functionality to the conventional navigation tool,such as the “Find” tool, in application programs. However, in accordancewith the illustrated method, enhanced tool module 178 in step 220searches the whole of the document (e.g., html document or equivalentcomputing file or code) for instances of the search term, such as“TEST”, in contrast to conventional “Find” tools, which merely searchthe currently loaded content of the document (e.g., currently loadedBody of an html document). However, in other example implementations, aconventional “Find” tool may perform steps 210 to 230, based on thecurrently loaded content. In either case, the subsequent steps 240 to290 of the method 200 of FIG. 2 may be performed by, or as part of, anenhanced tool based on the whole document (e.g., html document orequivalent), and may be performed automatically, based on applicationand/or user settings, upon user request or otherwise according toimplementation requirements.

At step 240, enhanced tool module 178 determines whether an instance ofthe search term, such as “TEST,” identified in step 220, is within ahidden content element of the document. In particular, as describedabove, a hidden content element may be a content element that is notcurrently presented to a user by the user application, for examplebecause it is predetermined that the content element is hidden fromview, the content element is in a collapsed part of the html tree (orequivalent), the content element is dynamically generated, or for someother reason. In the illustrated method, while enhanced tool module 178searches for all instances of the search term in the whole documentduring step 220, enhanced tool module 178 may determine in step 240 thatan instance of the search term “TEST” is within a hidden content elementof the document, if in step 230 enhanced tool module 178 was unable tohighlight all the instances that were identified in step 220. In otherimplementations, a hidden content element comprising an instance of thesearch term may be identified by examining the surrounding code forpredetermined characteristics, as described further below.

If in step 240 enhanced tool module 178 determines that no instances ofthe search term were identified within a hidden content element of thedocument, the method ends at step 295. However, if enhanced tool module178 determines in step 240 that there is at least one instance of thesearch term identified within a hidden content element of the document,the method proceeds to step 250.

In step 250, enhanced tool module 178 determines an element for exposingthe hidden content element containing the identified instance(s) of thesearch term, such as “TEST”. For example, enhanced tool module 178 instep 250 may identify a visible content element comprising a userinterface (UI) element, with which a user may interact to expose thehidden content element containing the instance(s) of the search term.Alternatively, enhanced tool module 178 in step 250 may generate a UIelement for presentation to the user, with which a user may interact toexpose or dynamically create the hidden content element containing theidentified instance(s) of the search term. Examples of methods performedduring step 250 are described below with reference to FIGS. 3 and 4. Asthe skilled person will appreciate, other techniques for determining acontent element, for exposing the hidden content element containing theinstance(s) of the search term “TEST” are possible and contemplated bythe present disclosure.

In step 260, enhanced tool module 178 presents the UI element forexposing the hidden content element containing the identifiedinstance(s) of the search term “TEST”. The UI element is highlighted inthe presentation to the user. For example, if enhanced tool module 178identifies a visible UI element in step 250, in step 260 enhanced toolmodule 178 may highlight the identified UI element using the same ordifferent highlighting technique used to highlight identifiedinstance(s) of the search term in visible content elements in step 230.Alternatively, if enhanced tool module 178 generates a UI element instep 250, enhanced tool module 178 may present the generated UI elementto the user in step 260, with corresponding highlighting or otherwise.

Thus, in step 260, enhanced tool module 178 presents a UI element thatprovides a navigational guide to enable a user to view instances of thesearch term that are hidden from the current view of a documentpresented by the user application. In particular, a user may navigate toand interact with the UI element presented in step 260, in order toexpose the hidden content element containing the identified instance(s)of the search term.

Accordingly, in optional step 270, enhanced tool module 178 periodicallydetermines whether a user interaction with the UI element presented instep 260 is detected. For example, in step 270 enhanced tool module 178may detect a mouse click, keystroke, hover, touchscreen gesture orequivalent user interaction. If enhanced tool module 178 detects a userinteraction in step 270, the method proceeds to step 280.

In step 280, enhanced tool module 178 receives a user interactionassociated with the UI element for exposing a hidden content elementcontaining an identified instance of the search term, and in step 290enhanced tool module 178 presents the hidden content element with theidentified instance of the search term highlighted. The method then endsat step 295.

As the skilled person will appreciate, some of the steps of the method200 of FIG. 2 may be repeated, for example in scenarios where thedocument contains multiple hidden content elements containing the searchterm. For example, steps 250 and 260 may be repeated for each of themultiple hidden content elements, so as to determine and present acorresponding UI element for exposing the hidden content element.Similarly, steps 270 to 290 may be repeated for each user interactionwith one or more of the UI elements for exposing the hidden contentelements. As the skilled person will further appreciate, modificationsand variations of the method 200 of FIG. 2 are possible and contemplatedby the present disclosure.

Furthermore, as described further below with reference to FIG. 3, insome scenarios the search term may be contained within a hidden contentelement that is exposed indirectly via multiple intermediate UIelements, rather than directly via a single UI element in the view ofthe currently presented document. In this case, in step 290 enhancedtool module 178 may not immediately present the hidden content elementwith the instance of the search term highlighted, but instead maypresent an intermediate UI element for interaction by the user. Thisprocess of user interaction and presentation of an intermediate UIelement may be repeated until the hidden content element containing thesearch term is exposed.

FIG. 3 is a flowchart of a method 300 for revealing hidden contentelements during enhanced search and navigation of a document presentedby a user application in accordance with example implementations of thepresent disclosure. In particular, although not exclusively, the method300 may by performed by enhanced tool module 178 in one or more of steps240 to 260 of the method 200 of FIG. 2, and/or by processing unit 130 inaccordance with one or more processing modules 170 comprising enhancedtool module 178 of memory unit 120 of the computing device 110 of FIG.1.

In example implementations according to the method shown in FIG. 3, thesearch and navigation tool is a “Find” tool in a web browserapplication, in particular for locating instances of a user input searchterm comprising a text string within a webpage (i.e., html document)currently presented by the web browser. Other example implementations,comprising other types of search and/or navigation tool in other typesof user applications, are possible and contemplated by the presentdisclosure.

The method 300 starts at step 305. For example, the method may start inresponse to a determination, by a “Find” tool, that an identifiedinstance of a search term (e.g., text string “TEST”) is in a hiddencontent element, as in step 240 of the method 200 of FIG. 200. In otherimplementations, the method may be performed in response to a triggeringevent for enhanced search and/or navigation, as discussed above. In anyevent, the method starts at step 305 with an identified instance of thesearch term within a hidden content element of the html document, wherethe hidden content element has an identifier “ID”.

In step 310, enhanced tool module 178 searches the JavaScript®(JavaScript® and all JavaScript®-based trademarks and logos aretrademarks or registered trademarks of Oracle Corporation and/or itsaffiliates), HTML, CSS or equivalent code within the whole of the htmldocument and/or corresponding DOM representation for a function thatmakes the hidden content element with the identifier “ID” visible. Forexample, in step 310 enhanced tool module 178 may search for codesegments or scripts that include the identifier “ID” in combination withone or more predetermined functions that set the visibility (orequivalent) to “visible”, and may identify a function having a functionkeyword and name.

In step 320, enhanced tool module 178 searches the JavaScript®, HTML,CSS or equivalent code within the html document (or equivalent) for oneor more usages of the containing function, identified by the functionkeyword and name in step 310. For example, in step 320 enhanced toolmodule 178 may search for code that calls the function identified instep 310, based on the function keyword and name of the identifiedfunction that makes the hidden element with the identifier “ID” visible.In example implementations, the function may be called by userinteractions. For example, in step 320 enhanced tool module 178 maysearch for an “onClick” HTML event that calls or otherwise contains ausage of the function, which is associated with the user interaction of“mouse clicking” (or equivalent) on a visible GUI element.Alternatively, in step 320, enhanced tool module 178 search for an“onHover” HTML event that calls or otherwise contains a usage of thefunction, which is associated with the user interaction of “hovering”over a visible GUI element. Other examples of automatic or userinteraction events that call a function are possible and contemplated bythe present disclosure.

In step 330, enhanced tool module 178 determines whether a usage of thefunction is found in step 320. If a usage of the function is found, themethod proceeds to step 330, otherwise the method continues with step320.

In step 340, enhanced tool module 178 determines whether the identifiedusage of the function comprises a usage of a UI element (e.g., a GUI orequivalent user interaction element). For example, as indicated above,the usage identified by enhanced tool module 178 in step 320 may involveenhanced tool module 178 calling the function based on user interactionssuch as “mouse clicking” or “hovering” associated with a GUI element(e.g., menu item, icon, etc). If the identified usage of the functiondoes not involve the usage of a UI element, the method returns to step320. However, if the identified usage of the function comprises theusage of a UI element, the method proceeds to step 350.

In step 350, enhanced tool module 178 determines whether the UI elementassociated with the identified usage is visible in the currentlypresented document (e.g., currently loaded html document/webpage). If instep 350 enhanced tool module 178 determines that the UI element isvisible, the method proceeds to step 360 wherein enhanced tool module178 highlights the visible UI element, for example as in step 260 of themethod 200 of FIG. 2 as described above. The user is then able toperform the relevant user interaction with the highlighted UI element.The user interaction typically refreshes the webpage, causing the “Find”tool to rerun, which in turn presents the identified instance of thetext string highlighted in the previously hidden (and now revealed)content element. The method then ends at step 365.

However, if in step 350 enhanced tool module 178 determines that the UIelement associated with the identified usage is not visible, the methodreturns to step 310 with the UI element treated as the new hiddencontent element. The method 300 then continues in a loop through steps320 to 350 until a UI element is found by enhanced tool module 178 thatis visible in the currently presented document. In step 360 enhancedtool module 178 then highlights the identified visible UI element, andtypically each identified intermediate element in the chain necessary toexpose the hidden content element containing the identified instance ofthe search term, and the method ends at step 365. As the skilled personwill appreciate, processing of steps 320 to 350 are repeated inscenarios where the hidden UI element, containing the identifiedinstance of the search term (e.g., the text string “TEST”), is nested orcollapsed within a chain of elements such as in an html tree In suchscenarios, user interaction with the highlighted UI element will revealeach intermediate UI element within the chain, in turn, until the hiddencontent element containing the identified instance of the search term isexposed.

In an example of the method 300 of FIG. 3, presented below, a user ofthe “Find” tool searches for the text string “item 1” in a webpagecurrently loaded and presented by a web browser. The whole html documentreceived from the originating web server is searched for the raw text“item 1”. A hidden content element is identified with the id: “submenu”having the search term “item 1” and with the CSS style set to“visibility: hidden:” in the section of code shown in bold below:

   <script>       function: showMenu( ) {         document.getElementById(“submenu”).style.          visibility =visible;       }    </script> </head> <body>    <nav id=“navbar”class=“navbar”>       <div id=“menu” onclick=showMenu( )>          Menu      </div>     </nav>     <div id=“submenu” style=“visibility:hidden:”>       <p>Item 1</p>       <p>Item 2</p>       <p>Item 3</p>    <div> </body> </html>

Thus, the method 300 starts at step 305 with the “Find” tool identifyingthe hidden content element with the id: “submenu”.

In step 310, enhanced tool module 178 searches the html document codefor a function that sets the visibility of the identified hidden contentelement “submenu” to visible, and identifies the function “showMenu( )”in the section of code shown in bold below:

   <script>       function: showMenu( ) {         document.getElementById(“submenu”).style.          visibility =visible;       }    </script> </head> <body>    <nav id=“navbar”class=“navbar”>       <div id=“menu” onclick=showMenu( )>          Menu      </div>     </nav>     <div id=“submenu” style=“visibility:hidden:”>       <p>Item 1</p>       <p>Item 2</p>       <p>Item 3</p>    <div> </body> </html>

Step 320 searches the code for a call or usage of the identifiedfunction “showMenu( )”, and finds a usage in the section of code shownin bold below:

   <script>       function: showMenu( ) {         document.getElementById(“submenu”).style.          visibility =visible;       }    </script> </head> <body>    <nav id=“navbar”class=“navbar”>       <div id=“menu” onclick=showMenu( )>          Menu      </div>     </nav>     <div id=“submenu” style=“visibility:hidden:”>       <p>Item 1</p>       <p>Item 2</p>       <p>Item 3</p>    <div> </body> </html>

In step 330 determines that the above usage of the function “showMenu()” is identified. In particular, the identified usage is that theelement id “menu” calls the “showMenu( )” function. In step 340,enhanced tool module 178 determines that the identified usage is a userinteraction (i.e., “onclick” event) with a UI element with theidentifier “menu”. In step 350, enhanced tool module 178 then determineswhether the element “menu” is visible. In this example, the codeindicates that the CSS style of the element “menu” is set to visible(not shown), indicating that the UI element “menu” is visible in thedocument presented to the user.

Accordingly, in step 360, enhanced tool module 178 highlights the UIelement “menu” in the document presented to the user, in the same way asother identified instances of the search term “item 1” are highlightedin the presented document. Thus, when the user interacts with (i.e.,clicks on) the UI element “menu”, the corresponding content element,including the search term “item 1”, is exposed. In this example, themenu options “item 1”, “item 2” and “item 3” are shown, for example as adrop-down list. The change in loaded and presented content, resultingfrom the user interaction, constitutes a page change event. Inconsequence, the “Find” tool is rerun, which, in turn, identifies andhighlights the no longer hidden instance of “item 1” in the menuoptions.

In the method 300 of FIG. 3, enhanced tool module 178 identifies afunction, the output of which makes the hidden content elementcontaining the search term visible. As the skilled person willappreciate, in other scenarios, the hidden content element may be madevisible by the output of a class instead of a function. Accordingly, inexample implementations, the method 300 of FIG. 3 may be modified toallow enhanced tool module 178 to identify a class (and usages thereof),in addition or as an alternative to identifying a function as in steps310 and 320 described above. As the skilled person will furtherappreciate, step 340 of the method 300 of FIG. 3 may require iterativeprocessing to identify usages of the function (or class) that are calledby a UI element. For example, in some scenarios, a non-UI element maycall the function (or class). In such a scenario, in step 340 enhancedtool module 178 may first identify the function call by the non-UIelement, and then identify a UI element that calls that non-UI element(and/or any intermediate non-UI elements).

FIG. 4 is a flowchart of another method 400 for revealing hidden contentelements during enhanced search and navigation of a document presentedby a user application in accordance with example implementations of thepresent disclosure. In particular, although not exclusively, the method400 may by performed by one or more of steps 240 to 260 of the method200 of FIG. 2, and/or by processing unit 130 in accordance with one ormore processing modules 170 comprising enhanced tool module 178 ofmemory unit 120 of the computing device 110 of FIG. 1.

In example implementations according to the method shown in FIG. 4, thenavigation tool is a “Find” tool in a web browser application, inparticular for locating instances of a user input search term comprisinga text string within a webpage (i.e., html document) currently loadedand presented by the web browser. Other example implementations,comprising other types of search and/or navigation tool in other typesof user applications, are possible and contemplated by the presentdisclosure.

In contrast to the method of FIG. 3, which reveals hidden contentelements that inherently contain the search term, the method of FIG. 4is used for revealing content elements having dynamically generatedcontent containing the search term.

The method 400 starts at step 405. For example, the method may start inresponse to a determination, by a “Find” tool, that one or moreidentified instances of a search term (e.g., the input test string“TEST”) is in a hidden content element, as in step 240 of the method 200of FIG. 200. In other implementations, the method may be performed inresponse to a triggering event for enhanced search and/or navigation, asdiscussed above. In any event, the method starts at step 405 with one ormore identified instances of the search term “TEST” within a hiddencontent element of the html document.

In step 410, enhanced tool module 178 selects an identified instance ofthe search term that has a variable value. In particular, in step 410enhanced tool module 178 may receive all identified instances of thesearch term, such as the text string “TEST”, which have been foundwithin hidden content elements in the whole html document (orequivalent), and identifies all instances of the search term that are“variables” (or equivalent). For example, in step 410 enhanced toolmodule 178 may identify instances of the search term that are containedin the html code within single quotes (i.e., written as “TEST”) orwithin double quotes (i.e., ““TEST””). As the skilled person willappreciate, terms that appear with single or double quotes in html codecorrespond to variable values, and therefore may be dynamicallygenerated according to one of a plurality of possible values for thevariable. Identified instances of the search term in hidden contentelements that do not appear in single or double quotes may be names ofvariables and functions, which are not relevant for to the “Find” toolas they do not represent document content (i.e., are not part of thehtml Body) and so are never presented to the user. Accordingly, in step410 enhanced tool module 178 selects an identified instance of thesearch term within a hidden content element that has a variable valuefor processing.

In step 420, enhanced tool module 178 determines an identifier of thevariable, to which the identified instance of the search term has beenassigned. For example, in step 420 enhanced tool module 178 may identifythe name or other identifier of the variable that may hold the valuethat matches the search term. Thus, in step 420 enhanced tool module 178identifies the variable for which the instance of the search term may bedynamically generated.

In step 430 enhanced tool module 178 determines all instances of codecontaining the variable identified in step 420 within the initializationscope to the identified instance of the search term. In particular, instep 430 enhanced tool module 178 may search the html document code,using the name or identifier of the variable, and find all instances ofcode containing the variable, within the scope of its initialization tothe target instance of the search term. As the skilled person willappreciate, in step 430 enhanced tool module 178 looks to find the pointor location within the code where the variable (potentially) leads tothe identified instance of the search term by traversing the code,starting from the code containing the identified instance of the searchterm, to find associated instances of the variable.

In step 440 enhanced tool module 178 identifies an instance of codewhere the identified variable is assigned to an element that ispresented (herein a “display element”) that potentially has a value thatmatches the search term. For example, in step 440 enhanced tool module178 may search the instances of code determined in step 430 to identifya section of code, in which the variable is assigned to a displayelement, such as a DOM element, innerHTML or innerText element (orequivalent). In example implementations, in step 440 enhanced toolmodule 178 may compile the instances of code identified in step 430, inorder to identify a section of code that ties the target variable to aparticular DOM element, innerHTML or innerText element (or equivalent).As the skilled person will appreciate, a value for a DOM, innerHTML orintertext element (or equivalent) may be dynamically generated andincluded in a UI element as part of a presented webpage. Thus, thesection of code identified in step 440 may further identify a UI elementcontaining the display element, to which the variable that maypotentially match the search term is assigned.

In step 450 enhanced tool module 178 identifies and runs the code thatassigns a value to the variable in the identified display element (e.g.,DOM, innerHTML or intertext element), to determine whether the elementvalue matches the search term. In step 460, enhanced tool module 178considers whether there is a match. If the display element value doesnot match the search term, then the search term is not dynamicallygenerated in the UI element, and the method continues with step 465. Instep 465, enhanced tool module 178 determines whether there are furtherinstances of code to be considered, and if so returns to step 440, whereenhanced tool module 178 selects another instance. If there are nofurther instances to consider, the method returns to step 410. However,if in step 460, enhanced tool module 178 determines the display elementvalue does match the search term, then the display element to which thevariable is assigned has a value that matches the search term.Accordingly, the search term will be dynamically generated in the UIelement, and the method proceeds to step 470.

As the skilled person will appreciate, steps 440, 450 and 460 may beperformed in any order or may be combined into a single step, accordingto implementation requirements. Furthermore, steps 440, 450 and 460represent just one possible technique for determining the element (ifany) in the document code that presents (e.g., displays) the dynamicallygenerated identified instance of the search term to the user. Inparticular, the technique identifies the pathway to the hidden contentelement comprising the dynamically generated search term, by traversingthe document code as described above. However, other techniques foridentifying the route or pathway, involving examining and processing thedocument code or otherwise, will be apparent to the skilled person. Suchalternative techniques are possible and contemplated by the presentdisclosure.

In step 470, enhanced tool module 178 determines whether the displayelement is part of a UI element, based on the section of code identifiedin step 440. If in step 470 enhanced tool module 178 determines that thedisplay element is not part of a UI element, then the method returns tostep 410. However, if in step 470 enhanced tool module 178 determinesthat the element is part of a UI element, the method proceeds to step475.

In step 475 enhanced tool module 178 determines whether the UI elementis visible, and thus currently presented in the html document/webpage tothe user. If in step 475 enhanced tool module 178 determines that the UIelement is visible, the method proceeds to step 480, where enhanced toolmodule 178 highlights the UI element in the document presented to theuser. For example, the UI element is highlighted in the same way asother identified instances of the search term “TEST” are highlighted inthe presented document. Thus, when the user interacts with thehighlighted UI element, the corresponding content including the searchterm is exposed, as described above. The method then ends at step 495.

Alternatively, if in step 475 enhanced tool module 178 determines thatthe UI element is hidden, the method proceeds to step 490. In step 490,enhanced tool module 178 identifies another visible UI element forexposing the UI element identified in step 440. For example, in step 490enhanced tool module 178 may perform sub-steps equivalent to steps 310to 350 of the method 300 of FIG. 3, to find the corresponding visible UIelement, which is then highlighted. The method then ends at step 495.Once again, when the user interacts with the highlighted UI element, itwill expose a further highlighted intermediate UI element as describedabove, until the UI element containing the dynamically generated searchterm is exposed.

As the skilled person will appreciate, the method of either FIG. 3 orFIG. 4 may be used in the method of FIG. 2 to identify instances of thesearch term in different types of hidden content element, according toapplication and/or user requirements. In some embodiments, the methodsof FIGS. 3 and 4 may be performed in combination, for exampleconsecutively or concurrently.

In example implementations of the present disclosure, a computer programproduct 190 may be provided, as shown in FIG. 1. The computer programproduct 190 may include computer readable media 192 having storage media194 and program instructions 196 (i.e., program code) embodiedtherewith. The program instructions 196 may be loaded onto memory unit120 of computing device 110 via I/O unit 140, for example by one of userinterface devices 150. The program instructions 196 may comprise anenhanced tool module 178, for performing one or more of the methods ofFIGS. 2, 3 and 4 as described above. In particular, enhanced tool module178 may be associated with a processing module 170 comprising a webbrowser. The web browser may receive an html document, corresponding toa webpage selected by a user, from web server 180 over the network 160via input/output unit 140 of computing device 110. The user may thenutilize the enhanced tool 178 for search and navigation of the presentedhtml document/webpage. As described above, in accordance with exampleimplementation of the present disclosure, the enhanced tool searches foridentified instances of a search term in the whole of the htmldocument/webpage, and highlights an element presented on the webpage foruser interaction, to enable the user to expose and view an identifiedinstance of the search term in an otherwise hidden content element.

Accordingly, the present disclosure provides techniques for improvedsearch and navigation of a document presented by a user application. Inparticular, instances of a search term in hidden content elements areidentified, and the user is presented with means to view such hiddencontent elements by navigation via one or more UI elements. Rather thanmerely considering the document code for the currently loaded/presenteddocument, in accordance with the present disclosure the document codefor the whole document is processed. In particular, the document code issearched in order to identify instances of the search term within hiddencontent elements. For each identified instance of the search term withina hidden content element, the document code is then traversed, orotherwise processed, to identify a pathway or route to expose the hiddencontent element by means of a UI element. A visible UI element may begenerated or highlighted in the presented document as the abovementionedmeans to view the hidden content element, which may involve navigationthereto via one or more intermediate UI elements.

Whilst the present disclosure has been described and illustrated withreference to example implementations, the skilled person will appreciatethat the present disclosure lends itself to many different variationsand modifications not specifically illustrated herein.

The present disclosure encompasses a system, a method, and/or a computerprogram product at any possible technical detail level of integration.The computer program product may include a computer readable storagemedium (or media) having computer readable program instructions thereonfor causing a processor to carry out aspects of the present disclosure.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present disclosure may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, configuration data for integrated circuitry, oreither source code or object code written in any combination of one ormore programming languages, including an object oriented programminglanguage such as Smalltalk, C++, or the like, and procedural programminglanguages, such as the “C” programming language or similar programminglanguages. The computer readable program instructions may executeentirely on the user's computer, partly on the user's computer, as astand-alone software package, partly on the user's computer and partlyon a remote computer or entirely on the remote computer or server. Inthe latter scenario, the remote computer may be connected to the user'scomputer through any type of network, including a local area network(LAN) or a wide area network (WAN), or the connection may be made to anexternal computer (for example, through the Internet using an InternetService Provider). In some example implementations, electronic circuitryincluding, for example, programmable logic circuitry, field-programmablegate arrays (FPGA), or programmable logic arrays (PLA) may execute thecomputer readable program instructions by utilizing state information ofthe computer readable program instructions to personalize the electroniccircuitry, in order to perform aspects of the present disclosure.

Aspects of the present disclosure are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to exampleimplementations of the disclosure. It will be understood that each blockof the flowchart illustrations and/or block diagrams, and combinationsof blocks in the flowchart illustrations and/or block diagrams, can beimplemented by computer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. These computer readable program instructionsmay also be stored in a computer readable storage medium that can directa computer, a programmable data processing apparatus, and/or otherdevices to function in a particular manner, such that the computerreadable storage medium having instructions stored therein comprises anarticle of manufacture including instructions which implement aspects ofthe function/act specified in the flowchart and/or block diagram blockor blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousexample implementations of the present disclosure. In this regard, eachblock in the flowchart or block diagrams may represent a module,segment, or portion of instructions, which comprises one or moreexecutable instructions for implementing the specified logicalfunction(s). In some alternative implementations, the functions noted inthe blocks may occur out of the order noted in the Figures. For example,two blocks shown in succession may, in fact, be executed substantiallyconcurrently, or the blocks may sometimes be executed in the reverseorder, depending upon the functionality involved. It will also be notedthat each block of the block diagrams and/or flowchart illustration, andcombinations of blocks in the block diagrams and/or flowchartillustration, can be implemented by special purpose hardware-basedsystems that perform the specified functions or acts or carry outcombinations of special purpose hardware and computer instructions.

The descriptions of the various example implementations of the presentdisclosure have been presented for purposes of illustration, but are notintended to be exhaustive or limited to the implementations disclosed.Many modifications and variations will be apparent to those of ordinaryskill in the art without departing from the scope and spirit of thedescribed implementations. The terminology used herein was chosen tobest explain the principles of the example implementations, thepractical application or technical improvement over technologies foundin the marketplace, or to enable others of ordinary skill in the art tounderstand the implementations disclosed herein.

What is claimed is:
 1. A computer implemented method, comprising:receiving a user-input search term in a search tool for findinginstances of the search term in a document currently presented to theuser; identifying an instance of the search term in a hidden contentelement of the document; determining a content element for exposing thehidden content element; and presenting the determined content element tothe user, wherein the determined content element is highlighted toprompt user interaction therewith so as to expose the hidden contentelement.
 2. The method of claim 1, wherein determining a content elementfor exposing the hidden content element comprises identifying acurrently presented content element.
 3. The method of claim 2, whereinthe identified currently presented content element comprises a userinteraction element for enabling user interaction therewith to exposethe hidden content element.
 4. The method of claim 1, whereindetermining an instance of the search term in a hidden content elementof the document comprises: searching code of the document currentlypresented to the user for instances of the search term; identifying asection of code for a content element comprising the search term; anddetermining that the content element comprising the search term is ahidden content element, when the content element is not currently loadedin the document presented to the user.
 5. The method of claim 4, furthercomprising: identifying, based on an identifier of the hidden contentelement, a function or class in the document code that makes the hiddencontent element visible; identifying, based on an identifier of thefunction or class, a usage of the function or class, wherein theidentified usage of the function or class is called by a calling contentelement; and determining the calling content element as the contentelement responsible for exposing the hidden content element, when thecalling content element comprises a user interaction element.
 6. Themethod of claim 5, further comprising the steps of: responsive todetermining that the calling content element does not comprise a userinteraction element, determining that the calling content element is asecond hidden content element; and determining a content element forexposing the second hidden content.
 7. The method of claim 1, whereinidentifying an instance of the search term in a hidden content elementof the document comprises: searching code of the document currentlypresented to the user for instances of the search term; selecting aninstance of the search term, wherein the search term comprises avariable; determining, based on an identifier of the variable, a contentelement to which the variable is assigned and having a value comprisingthe search term; and determining the content element to which thevariable has been assigned as the content element for exposing thehidden content element, when the content element comprises a userinteraction element.
 8. The method of claim 7, wherein determining,based on an identifier of the variable, a content element to which thevariable is assigned and having a value comprising the search termcomprises: identifying, based on the identifier of the variable, one ormore sections of code comprising the variable; identifying an instanceof the one or more sections of code in which the variable has beenassigned to an element for presentation; and determining whether theidentified instance of the one or more sections of code currentlyassigns a value to the element for presentation that matches the searchterm, wherein the element for presentation is determined as the contentelement, when the identified instance of the one or more sections ofcode currently assigns a value to the element that matches the searchterm.
 9. The method of claim 7, comprising determining whether thecontent element to which the variable has been assigned comprises a userinteraction element, wherein when the content element does not comprisea user interaction element, the method further comprises: determiningthat the content element to which the variable has been assigned is asecond hidden content element; and determining a content element forexposing the second hidden content element.
 10. The method of claim 1,wherein determining a content element for exposing the hidden contentelement comprises generating a content element, wherein the generatedcontent element comprises a user interface element configured to promptuser interaction therewith so as to expose the hidden content element.11. A system comprising: a computing device comprising a processing unitand a memory unit, wherein the computing device is configured to presentdocuments to a user and to enable the user to search for search termsusing a search tool, wherein the processing unit is configured to carryout the steps of: receiving a user-input search term in a search toolfor finding instances of the search term in a document currentlypresented to the user; identifying an instance of the search term in ahidden content element of the document; determining a content elementfor exposing the hidden content element; and presenting the determinedcontent element to the user, wherein the determined content element ishighlighted to prompt user interaction therewith so as to expose thehidden content element.
 12. The system of claim 11, wherein theprocessing unit is further configured to determine a content element forexposing the hidden content element by identifying a currently presentedcontent element.
 13. The system of claim 12, wherein the identifiedcurrently presented content element comprises a user interaction elementfor enabling user interaction therewith to expose the hidden contentelement.
 14. The system of claim 11, wherein the processing unit isconfigured to determine an instance of the search term in a hiddencontent element of the document by: searching code of the documentcurrently presented to the user for instances of the search term;identifying a section of code for a content element comprising thesearch term; and determining that the content element comprising thesearch term is a hidden content element, when the content element is notcurrently loaded in the document presented to the user.
 15. The systemof claim 14, wherein the processing unit is configured to perform thesteps of: identifying, based on an identifier of the hidden contentelement, a function or class in the document code that makes the hiddencontent element visible; identifying, based on an identifier of thefunction or class, a usage of the function or class, wherein theidentified usage of the function or class is called by a calling contentelement; and determining the calling content element as the contentelement responsible for exposing the hidden content element, when thecalling content element comprises a user interaction element.
 16. Thesystem of claim 15, wherein the processing unit is further configured toperform the steps of: responsive to determining that the calling contentelement does not comprise a user interaction element, determining thatthe calling content element is a second hidden content element; anddetermining a content element for exposing the second hidden content.17. The system of claim 11, wherein the processing unit is configured todetermine an instance of the search term in a hidden content element ofthe document by: searching the code of the document currently presentedto the user for instances of the search term; identifying an instance ofthe search term, in which the search term comprises a variable, anddetermining, based on an identifier of the variable, a content elementto which the variable is assigned and having a value comprising thesearch term, and determining the content element to which the variablehas been assigned as the content element for exposing the hidden contentelement, when the content element comprises a user interaction element.18. The system of claim 17, wherein the processing unit is configured todetermine, based on an identifier of the variable, a content element towhich the variable is assigned and having a value comprising the searchterm by: identifying, based on the identifier of the variable, one ormore sections of code comprising the variable; selecting an identifiedsection of code in which the variable has been assigned to a contentelement; and determining whether the selected identified section of codecurrently assigns a value to the content element that matches the searchterm, wherein the content element is determined as the content elementto which the variable is assigned and having a value comprising thesearch term, when the selected identified section of code currentlyassigns a value to the content element that matches the search term. 19.The system of claim 17, wherein the processing unit is configured todetermine whether the content element comprising the identified variablecomprises a user interaction element, wherein, when the content elementdoes not comprise a user interaction element, the processing unit isfurther configured to perform the steps of: determining that the contentelement comprising the identified variable is a second hidden contentelement; and determining a content element for exposing the secondhidden content element.
 20. A computer program product comprising acomputer readable storage medium having program instructions embodiedtherewith, wherein the program instructions are executable by aprocessor to cause the processor to: receive a user-input search term ina search tool for finding instances of the search term in a documentcurrently presented to the user; identify an instance of the search termin a hidden content element of the document; determine a content elementfor exposing the hidden content element; and present the determinedcontent element to the user, wherein the determined content element ishighlighted to prompt user interaction therewith so as to expose thehidden content element.